﻿using System.Windows.Forms;
using PinusClientDemo.Tools;

namespace PinusClientDemo
{
    public partial class MainForm : Form
    {
        //  private UserInfo user { get; set; } = null;
        private UserInfo user { get; set; } = new UserInfo { User = new UserHelper("izhen1", "1") };
        
        public MainForm()
        {
            InitializeComponent();
            //LogHelper.CreateConsole();
            //Task.Run(Init);
        }

        //#region 初始化

        //private Task Init()
        //{
        //    this.FormClosing += (s, e) => Process.GetCurrentProcess().Kill();

        //    this.SettingLogToolStripMenuItem.Click += (s, e) =>
        //    {
        //        if (this.SettingLogToolStripMenuItem.Checked)
        //            LogHelper.CreateConsole();
        //        else
        //            LogHelper.FreeConsole();
        //    };

        //    this.btnLogin.Click += (s, e) =>
        //        new Action(Login).BeginInvoke(null, null);

        //    this.btnBattle.Click += (s, e) => Task.Run(BattleFunction);

        //    Task.Run(LoadMapList);

        //    return Task.CompletedTask;
        //}


        //private Task LoadMapList()
        //{
        //    if (InvokeRequired)
        //    {
        //        Invoke(new Action(() => { LoadMapList(); }));
        //        return Task.CompletedTask;
        //    }

        //    MapComboBox.Items.Clear();
        //    var strData = File.ReadAllText("Data/Map.json");

        //    if (JsonConvert.DeserializeObject(strData) is not JArray json)
        //        return Task.CompletedTask;

        //    foreach (var token in json)
        //        MapComboBox.Items.Add(new MapItem(token.Value<string>("id"), token.Value<string>("name")));

        //    MapComboBox.SelectedIndex = 0;
        //    return Task.CompletedTask;
        //}

        //#endregion


        //private void Login()
        //{
        //    var username = txtUserName.Text.Trim();
        //    var password = txtPassWord.Text.Trim();

        //    user = new UserInfo { User = new UserHelper(username, password) };

        //    RefreshMsg(LoginStripStatusLabel, "登录中...");

        //    Task.Run(() =>
        //    {
        //        do
        //        {
        //            while (user.User.QueueMsg.Count > 0)
        //            {
        //                var msg = user.User.QueueMsg.Dequeue();
        //                LogHelper.Log.Information(msg.Route.ToString());
        //                LogHelper.Log.Information(msg.StrBody);
        //                var actionName = msg.Route.ToString().ToUpper().Replace(".", "_");
        //                var method = this.GetType().GetMethod(actionName);
        //                if (method != null)
        //                {
        //                    method.Invoke(this, new object[] { msg.StrBody });
        //                }
        //            }
        //            Thread.Sleep(100);
        //        } while (true);
        //    });
        //}

        //private Task BattleFunction()
        //{
        //    Invoke(new Action(() =>
        //    {
        //        MapId = (MapComboBox.SelectedItem as MapItem)?.Id;

        //        if (btnBattle.Text == "开始")
        //        {
        //            btnBattle.Text = "停止";
        //            AutoBattle = true;
        //            user.User.BattleStart(MapId);
        //        }
        //        else
        //        {
        //            btnBattle.Text = "开始";
        //            AutoBattle = false;
        //        }
        //    }));
        //    return Task.CompletedTask;
        //}


        ////public void PLAYER_PLAYERINFO(string data)
        ////{
        ////    Debug.WriteLine(data);
        ////}

        //#region 路由回调事件

        //public void CONNECTOR_ENTRYHANDLER_ENTRY(string data)
        //{
        //    if (JsonConvert.DeserializeObject(data) is JToken json && json.Value<int>("code") == 200)
        //    {
        //        LogHelper.Log.Information("登录成功");
        //        RefreshMsg(LoginStripStatusLabel, "已登录");
        //    }
        //    else
        //    {
        //        LogHelper.Log.Information($@"登录失败，返回结果：{data}");
        //        RefreshMsg(LoginStripStatusLabel, "未登录");
        //    }
        //}

        //private static bool AutoBattle { get; set; } = false;
        //private static String MapId { get; set; } = String.Empty;

        //public void BATTLE_MONSTERBATTLEEND(object data)
        //{
        //    LogHelper.Log.Information($@"战斗结束返回结果：{data}");
        //    if (AutoBattle)
        //    {
        //        user.User.BattleStart(MapId);
        //        LogHelper.Log.Information($@"战斗开始...");
        //    }
        //}
        //#endregion


        //private void RefreshMsg(object control, string message)
        //{
        //    if (InvokeRequired)
        //    {
        //        Invoke(new Action(() => { RefreshMsg(control, message); }));
        //        return;
        //    }

        //    if (control is ToolStripStatusLabel label)
        //    {
        //        label.Text = message;
        //    }
        //}
    }
}


#region 临时记录

//for (int i = 1; i <= 50; i++)
//{

//    var user = new UserHelper($@"suser{i.ToString("000")}", "1");
//    userList.Add(new UserInfo { User = user });

//    Task.Run(() =>
//    {
//        do
//        {
//            while (user.QueueMsg.Count > 0)
//            {
//                var msg = user.QueueMsg.Dequeue();
//                Debug.WriteLine(msg.Route.ToString());
//                Debug.WriteLine(msg.StrBody);
//                var actionName = msg.Route.ToString().ToUpper().Replace(".", "_");
//                var method = this.GetType().GetMethod(actionName);
//                if (method != null)
//                {
//                    method.Invoke(this, new object[] { msg.StrBody, user });
//                }
//            }
//            Thread.Sleep(100);
//        } while (true);
//    });
//}

#endregion
